package com.dingreading.cloud.ssxcx.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

/**
 * 实体类。
 *
 * @author Administrator
 * @since 2023-11-22
 */
@Data
@Table(value = "cmservices")
public class Cmservices implements Serializable {

    @Id(keyType = KeyType.Auto)
    private Long id;

    /**
     * 添加时间
     */
    @ApiModelProperty(value = "添加时间")
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @Column(onInsertValue = "now()")
    private Date addTime;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date lastEditTime;

    /**
     * 订单号
     */
    @ApiModelProperty(value = "订单号")
    private String orderCode;

    /**
     * 公司uid
     */
    @ApiModelProperty(value = "公司uid")
    private String corpUid;

    /**
     * 门店uid
     */
    @ApiModelProperty(value = "门店uid")
    private String storeUid;

    /**
     * 门店名称
     */
    @ApiModelProperty(value = "门店名称")
    private String storeName;

    /**
     * 会员uid
     */
    @ApiModelProperty(value = "会员uid")
    private String memberUid;

    /**
     * 会员名称
     */
    @ApiModelProperty(value = "会员名称")
    private String memberName;

    /**
     * uid
     */
    @ApiModelProperty(value = "uid")
    private String uid;

    /**
     * 产品编号
     * 体验会员:1，好读团:2，精读会:3，文学社:4，悦读坊:5，绘本营:6
     */
    @ApiModelProperty(value = "产品编号")
    private String productCode;

    @ApiModelProperty(value = "产品名称")
    private String productName;

    /**
     * 服务时长
     * 两周:14，三周:21，一个月:31，二个月:62，三个月:92，半年:183，一年:366，两年:731
     */
    @ApiModelProperty(value = "服务时长")
    private Integer serviceDays;

    /**
     * 服务周期
     * 两周:1，三周:2，一个月:3，二个月:4，三个月:5，半年:6，一年:7，两年:8
     */
    @ApiModelProperty(value = "服务周期")
    private Integer serviceCycle;

    @ApiModelProperty(value = "服务周期名称")
    private String cycleName;

    /**
     * 剩余天数
     */
    @ApiModelProperty(value = "剩余天数")
    private Integer leftDays;

    /**
     * 总活动数
     */
    @ApiModelProperty(value = "总活动数")
    private Integer totalLessons;

    /**
     * 剩余活动数
     */
    @ApiModelProperty(value = "剩余活动数")
    private Integer leftLessons;

    /**
     * 消耗/退费的活动数或天数
     */
    @ApiModelProperty(value = "消耗/退费的活动数或天数")
    private Integer changeValue;

    /**
     * 开卡状态 未开通:-1，暂停服务:0，服务中:1 -6.已消耗 -7:已变更 -8:已退费 -9:已完结
     */
    @ApiModelProperty(value = "状态")
    private Integer status;

    @ApiModelProperty(value = "状态名称")
    private String statusName;

    /**
     * 暂停服务日期
     */
    @ApiModelProperty(value = "暂停服务日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date pauseDate;

    /**
     * 暂停服务日期
     */
    @ApiModelProperty(value = "暂停服务日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date transferDate;

    /**
     * 开始日期
     */
    @ApiModelProperty(value = "开始日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date beginDate;

    /**
     * 结束日期
     */
    @ApiModelProperty(value = "结束日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date endDate;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remarks;

    /**
     * 是否为赠送 是:1，否:0
     */
    @ApiModelProperty(value = "是否为赠送 是:1，否:0")
    private Integer isGift;

    /**
     * 导读员工uid
     */
    @ApiModelProperty(value = "导读员工uid")
    private String staffUid;

    /**
     * 导读员工电话
     */
    @ApiModelProperty(value = "导读员工电话")
    private String staffPriPhone;

    /**
     * 导读员工姓名
     */
    @ApiModelProperty(value = "导读员工姓名")
    private String staffFullName;

    /**
     * 导读员工昵称
     */
    @ApiModelProperty(value = "导读员工昵称")
    private String staffNickName;

    /**
     * 创建人uid
     */
    @ApiModelProperty(value = "创建人uid")
    private String addStaffUid;

    /**
     * 创建人姓名
     */
    @ApiModelProperty(value = "创建人姓名")
    private String addStaffName;

    /**
     * 更新人uid
     */
    @ApiModelProperty(value = "更新人uid")
    private String lastStaffUid;

    /**
     * 更新人姓名
     */
    @ApiModelProperty(value = "更新人姓名")
    private String lastStaffName;

    /**
     * 剩余活动总数
     */
    @ApiModelProperty(value = "剩余活动总数")
    private Integer leftLessonCnt;

    /**
     * 收入类型
     */
    @ApiModelProperty(value = "收入类型")
    private String orderType;

    /**
     * 关联订单号 退费/变更的订单
     */
    @ApiModelProperty(value = "关联订单号")
    private String relationCode;

    /**
     * 关联服务uid 退费/变更
     */
    @ApiModelProperty(value = "关联服务uid")
    private String relationServiceUid;

    /**
     * 变更状态 -6.已消耗 -7:已变更 -8:已退费 -9:已完结
     */
    @ApiModelProperty(value = "变更状态")
    private Integer changeStatus;

    @ApiModelProperty(value = "变更状态名称")
    private String changeStatusName;

    /**
     * 活动状态 1.可排活动 0.不可排活动
     */
    @ApiModelProperty(value = "活动状态")
    private Integer lessonStatus;

    /**
     * 活动次数状态 1.消耗次数 0.不消耗次数
     */
    @ApiModelProperty(value = "活动次数状态")
    private Integer freeStatus;

    @ApiModelProperty(value = "服务uid")
    private String projectUid;

    @ApiModelProperty(value = "产品包uid")
    private String productUid;

    @ApiModelProperty(value = "产品包类型")
    private Integer productType;

    @ApiModelProperty(value = "产品uid")
    private String productLogUid;

    @ApiModelProperty(value = "产品包名称")
    private String storeProductName;

    /**
     * 区分多个相同产品包的标识
     */
    @ApiModelProperty(value = "产品包唯一标识")
    private String pkgUid;

    /**
     * 来源门店uid
     */
    @ApiModelProperty(value = "来源门店uid")
    private String fromStoreUid;

    /**
     * 来源门店名称
     */
    @ApiModelProperty(value = "来源门店名称")
    private String fromStoreName;

    /**
     * 服务总金额
     */
    private Double totalAmount;

    /**
     * 单课次金额
     */
    private Double unitAmount;

    @ApiModelProperty(value = "变更日期")
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date changeDate;

    /**
     * 已结课为1，未结课为0，默认为0
     */
    private Integer ending;

    /**
     * 正常消耗玩结课为1，退费、变更导致结课为2，手动结课为3，还会有其他系统强制结课待定义
     */
    private Integer endingType;

    /**
     * 操作结课的时间
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endingTime;

    /**
     * 结课原因
     */
    private String endingRemark;

    /**
     * 结课人员姓名
     */
    private String endingStaffName;

    /**
     * 结课人员uid
     */
    private String endingStaffUid;

    /**
     * 数据来源
     * 1.叮叮 2.名师堂
     */
    @ApiModelProperty(value = "数据来源")
    private Integer databaseType;

    /**
     * 主科目UID
     */
    private String mainSubjectUid;
    /**
     * 主科目名称
     */
    private String mainSubjectName;
    /**
     * 科目UID
     */
    private String subjectUid;
    /**
     * 科目名称
     */
    private String subjectName;
    /**
     * 阶段uid
     */
    private String stageUid;
    /**
     * 阶段名称
     */
    private String stageName;
    /**
     * 服务激活金额
     */
    private Double activateAmount;
    /**
     * 支付类型 1.微信 2.支付宝 3.激活码
     */
    private Integer payType;


}
